/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.resume.contrat.assembler;

import java.util.ArrayList;
import java.util.List;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import fr.generali.accueilclient.resume.contrat.om.IEnvironnementLie;
import fr.generali.refservcommuns.rce.liste.contrats.consultationcontratpersonneservice.DTOPersonneRole;
import fr.generali.refservcommuns.rce.liste.contrats.consultationcontratpersonneservice.DossierContrat;
import fr.generali.refservcommuns.rce.liste.contrats.consultationcontratpersonneservice.ListeDossierContrat;

/**
 * Transforme les numéros de client en un {@link ListeDossierContrat} utilisable
 * par le service S14
 * 
 * @author Guillaume Lancelin
 */
@Component("environnementLie2ListeDossierContratConverter")
public class EnvironnementLie2ListeDossierContratConverter implements Converter<IEnvironnementLie, ListeDossierContrat> {

    /**
     * {@inheritDoc}
     */
    public ListeDossierContrat convert(IEnvironnementLie environnementLie) {

        ListeDossierContrat listeDossierContrat = null;

        List<String> identifiantClients = environnementLie == null ? null : environnementLie.getIdentifiantClients();

        if (identifiantClients != null && !identifiantClients.isEmpty()) {

            listeDossierContrat = new ListeDossierContrat();

            List<DossierContrat> liste = new ArrayList<DossierContrat>();

            for (String idClient : identifiantClients) {

                if (idClient != null) {

                    DossierContrat dossier = new DossierContrat();
                    DTOPersonneRole role = new DTOPersonneRole();
                    role.setIdentifiantPersonne(idClient);
                    role.setRolePersonne("tous");
                    dossier.setRolePersonne(role);
                    liste.add(dossier);
                }
            }
            listeDossierContrat.getDossierContrat().addAll(liste);
        }

        return listeDossierContrat;
    }
}
